/******************************************
 * Nombre del archivo: Op_Predicados2.java
 * Universidad del Valle de Guatemala
 * Curso: Algoritmos y Estructura de Datos
 * Autores:
 *      * Martín Guzmán     08041
 *      * David Hsieh       08225
 *      * Eduardo Mejicano  08058
 *      * Kevin Sánchez     08302
 * Fecha: 16 de agosto de 2009
 * Descripción:
*******************************************/

public class Op_Predicados2 extends Operacion{
    private static String[] Operadores_condicionales = {">","<","=","EQUAL", "OR", "AND", "ATOM"};

    public Op_Predicados2() {

    }
    /*****************************************
     * Método: Operar
     * Autor: David Hsieh
     * Uso: Manda a llamar a la operación
     *      respectiva
     * Retorno: Un sting con la respuesta de
     *      la operación
     *****************************************/
    public static String Operar(String operador,String A,String B){
        String result="";
        //System.out.println(operador);
        

        if (operador.compareTo(">")==0){
            if(Integer.parseInt(A) > Integer.parseInt(B))
                result = "T";
            else
                result = "NIL";
        }

        else if (operador.compareTo("<")==0){
            if(Integer.parseInt(A) < Integer.parseInt(B))
                result = "T";
            else
                result = "NIL";
        }

        else if (operador.compareTo("=")==0){
            if(Integer.parseInt(A) == Integer.parseInt(B))
                result = "T";
            else
                result = "NIL";
        }
        else if (operador.compareToIgnoreCase("EQUAL")==0){
            if(A.compareToIgnoreCase(B)==0)
                result = "T";
            else
                result = "NIL";
        }
        if (operador.compareTo("OR")==0){
            if(A.compareToIgnoreCase("T")==0 || B.compareToIgnoreCase("T")==0)
                result = "T";
            else
                result = "NIL";
        }

        else if (operador.compareTo("AND")==0){
            if(A.compareToIgnoreCase("T")==0 && B.compareToIgnoreCase("T")==0)
                result = "T";
            else
                result = "NIL";
        }
        else if (operador.compareToIgnoreCase("ATOM")==0){
            result = "T";
        }
        return result;

    }

    /*****************************************
     * Método: Operar
     * Autor: David Hsieh
     * Uso: Manda a llamar a la operación
     *      respectiva
     * Retorno: Un sting con la respuesta de
     *      la operación
     *****************************************/
    public static String Operar(String operador, String cadena){
        String result="";
        System.out.println(operador);
        System.out.println(cadena);


        if (cadena.startsWith("'("))
            result = "NIL";        
        else
            result = "T";
        return result;

    }

     /*****************************************
     * Método: getOperadores
     * Autor: David Hsieh
     * Uso: para obtener los operadores de esta
     *      clase desde afuera de ella
     * Retorno: un arreglo con operadores como
     *          de la clase
     *****************************************/

    public static String[] getOperadores() {
        return Operadores_condicionales;
    }
    /*****************************************
     * Método: Buscar
     * Autor: Martín Guzmán
     * Uso: para ver si se encuentra determinado
     *      operador en esta clase
     * Retorno: Booleano con la respuesta
     *****************************************/
    public static boolean Buscar(String operador) {
        boolean retorno=false;
        for(int i=0;i<Operadores_condicionales.length;i++){
            if(Operadores_condicionales[i].compareToIgnoreCase(operador)==0){
                retorno=true;
            }
        }
        return retorno;
    }

    
}

